package main

import "fmt"

func main() {
	/*
		数据类型：
			基本数据类型：int, float, string, bool
			复合数据类型：array, slice, map, function, pointer, struct...

				array：[size]数据类型
				slice：[]数据类型
				map；map[key的类型]value的类型

		存储特点：
			值类型：int, float, string, bool, array， struct
			引用类型：slice, map

				make(): slice, map, channel
				//make()创建的都是引用类型数据

	*/
	map1 := make(map[string]map[string]string) //map[string]map[string]string
	m1 := make(map[string]string)
	m1["name"] = "喜羊羊"
	m1["age"] = "18"
	m1["salary"] = "10000"
	map1["hr"] = m1

	m2 := make(map[string]string)
	m2["name"] = "灰太狼"
	m2["age"] = "36"
	m2["salary"] = "10000"
	map1["总经理"] = m2
	fmt.Println(map1)

	fmt.Println("----------------------------")

	map2 := make(map[string]string)
	map2["喜羊羊"] = "帅炸天"
	map2["灰太狼"] = "万事通"
	map2["小灰灰"] = "在隔壁"

	fmt.Println(map2) //map[喜羊羊:帅炸天 小灰灰:在隔壁 灰太狼:万事通]

	map3 := map2      // map2 和 map3 指向同一块内存
	fmt.Println(map3) //map[喜羊羊:帅炸天 小灰灰:在隔壁 灰太狼:万事通]

	map3["小灰灰"] = "可爱鬼"
	fmt.Println(map2) //map[喜羊羊:帅炸天 小灰灰:可爱鬼 灰太狼:万事通]
	fmt.Println(map3) //map[喜羊羊:帅炸天 小灰灰:可爱鬼 灰太狼:万事通]
}
